import re
import datetime
import random
import string


def parse_code(text: str, lang: str = '') -> str:
    """
       从给定的文本中解析出指定语言的代码块。

       参数:
       text: str - 包含代码的文本字符串。
       lang: str - 代码的语言，用于匹配代码块。默认为空字符串，表示默认语言。

       返回:
       str - 解析出的代码字符串。如果未找到匹配的代码块，则抛出异常。

       异常:
       如果给定文本中没有找到指定
    """
    # 构建正则表达式模式，用于匹配指定语言的代码块
    pattern = rf'```{lang}.*?\s+(.*?)```'
    # 使用正则表达式搜索文本中的代码块
    match = re.search(pattern, text, re.DOTALL)
    if match:
        # 如果找到匹配的代码块，返回第一个匹配组的内容
        code = match.group(1)
    else:
        # 如果没有找到匹配的代码块，抛出异常并返回空字符串
        raise Exception('Code Pattern Not Matched')
    return code


def generate_random_string(length=8):
    """生成指定长度的随机字符串"""
    letters = string.ascii_letters + string.digits
    return ''.join(random.choice(letters) for _ in range(length))


def generate_timestamped_random_string():
    """生成当前时分秒开头的随机字符串"""
    # 获取当前时分秒
    now = datetime.datetime.now()
    timestamp = now.strftime("%Y%m%d%H%M%S")

    # 生成随机字符串
    random_str = generate_random_string(8)

    # 组合字符串
    result = f"{timestamp}_{random_str}"

    return result